{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from math import sin, cos, factorial\n",
    "\n",
    "\n",
    "def f_sin(x, p):\n",
    "    if p == 0:\n",
    "        return sin(x)\n",
    "\n",
    "        return x\n",
    "    if p % 4 == 1:\n",
    "        return cos(x)\n",
    "\n",
    "    if p % 4 == 2:\n",
    "        return -sin(x)\n",
    "\n",
    "    if p % 4 == 3:\n",
    "        return -cos(x)\n",
    "\n",
    "    return sin(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def taylor(df, x, a, n):\n",
    "\n",
    "    f = 0.0\n",
    "\n",
    "    for i in range(n+1):\n",
    "        term = df(a, i) * (x - a)**i / factorial(i)\n",
    "        f += term\n",
    "\n",
    "    return f"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "AAAAAElFTkSuQmCC\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ac3550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "from IPython.html.widgets import interact, interactive, fixed\n",
    "from  IPython.html.widgets import FloatSliderWidget as fWidget\n",
    "from  IPython.html.widgets import IntSliderWidget as iWidget\n",
    "\n",
    "x = 0.1\n",
    "a = 0.8\n",
    "n = 1\n",
    "\n",
    "def plot_data(a, n):\n",
    "    xs = np.linspace(-2, 2, 50)\n",
    "    ts = [taylor(f_sin, i, a, n) for i in xs]\n",
    "\n",
    "    plt.plot(xs, np.sin(xs))\n",
    "    plt.plot(xs, ts)\n",
    "    plt.xlim(-2,2)\n",
    "    plt.ylim(-2,2)\n",
    "    plt.axvline(a)\n",
    "    plt.show()\n",
    "    \n",
    "interact(plot_data, \n",
    "         a = fWidget(value=0.8, min=-1.9, max=1.9),\n",
    "         n = iWidget(value=2, min=1, max=8))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
